x11: Avoid a possible memory leak in an error case
authorMatthias Clasen <mclasen@redhat.com>
Sat, 4 Jan 2014 20:13:51 +0000 (15:13 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 4 Jan 2014 20:13:51 +0000 (15:13 -0500)
If _NET_WORKAREA is set to nonsensical values, we should still
free the memory before returning.

gdk/x11/gdkscreen-x11.c

index 6b098340d62c8848e4f3c732d09a74dd1e4e09a4..9f09ce11716d249ec3b1fdb79337b8da32baa430 100644 (file)
@@ -314,7 +314,7 @@ get_work_area (GdkScreen    *screen,
   gulong          num;
   gulong          leftovers;
   gulong          max_len = 4 * 32;
-  guchar         *ret_workarea;
+  guchar         *ret_workarea = NULL;
   long           *workareas;
   int             result;
   int             disp_screen;
@@ -356,7 +356,7 @@ get_work_area (GdkScreen    *screen,
       format == 0 ||
       leftovers ||
       num % 4 != 0)
-    return;
+    goto out;
 
   desktop = get_current_desktop (screen);
 
@@ -371,7 +371,9 @@ get_work_area (GdkScreen    *screen,
   area->width /= x11_screen->window_scale;
   area->height /= x11_screen->window_scale;
 
-  XFree (ret_workarea);
+out:
+  if (ret_workarea)
+    XFree (ret_workarea);
 }
 
 static void